home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / util / gnu / oleo_src.lha / src / funcdef.h < prev    next >
C/C++ Source or Header  |  1992-07-27  |  7KB  |  154 lines

  1. /*    Copyright (C) 1990 Free Software Foundation, Inc.
  2.  
  3. This file is part of Oleo, the GNU Spreadsheet.
  4.  
  5. Oleo is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 1, or (at your option)
  8. any later version.
  9.  
  10. Oleo is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with Oleo; see the file COPYING.  If not, write to
  17. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  18.  
  19. /* Special macros designed to remove some __STDC__ ugliness from my source
  20.    files.  Instead, I use these (which may be just as ugly.  Instead of using
  21. extern foo(); 
  22.    or
  23. extern foo(int,double);
  24.    I use
  25. extern foo FUN2(int, double);
  26.    which is expanded to the right thing depending on whether you're using an
  27.    ANSI cc or not.
  28.  
  29.    Also, instead of saying
  30. type
  31. foo(x,y)
  32. int x;
  33. double y;
  34.    or
  35. type
  36. foo(int x, double y)
  37.    I use
  38. type
  39. foo FUN2(int, x, double, y)
  40. Which is also expanded into the right thing. . .
  41.  */
  42.  
  43. #ifdef __STDC__
  44. #include <stdarg.h>
  45. #define var_start(x,y) va_start(x,y)
  46.  
  47. /* These macros expand into ANSI prototypes */
  48. #define FUN0()        (void)
  49. #define EXT0()        (void)
  50.  
  51. #define FUN1(t1,a1)    (t1 a1)
  52. #define EXT1(t1)    (t1)
  53. #define FUN1N(t1,a1)    (t1 a1, ...)
  54. #define EXT1N(t1)    (t1, ...)
  55.  
  56. #define FUN2(t1,a1,t2,a2)    (t1 a1,t2 a2)
  57. #define EXT2(t1, t2)        (t1, t2)
  58. #define FUN2N(t1,a1,t2,a2)    (t1 a1,t2 a2, ...)
  59. #define EXT2N(t1, t2)        (t1, t2, ...)
  60.  
  61. #define FUN3(t1,a1,t2,a2,t3,a3)    (t1 a1, t2 a2, t3 a3)
  62. #define EXT3(t1, t2, t3)    (t1, t2, t3)
  63. #define FUN3N(t1,a1,t2,a2,t3,a3)(t1 a1, t2 a2, t3 a3, ...)
  64. #define EXT3N(t1, t2, t3)    (t1, t2, t3, ...)
  65.  
  66. #define FUN4(t1,a1,t2,a2,t3,a3,t4,a4)    (t1 a1, t2 a2, t3 a3, t4 a4)
  67. #define EXT4(t1, t2, t3, t4)        (t1, t2, t3, t4)
  68.  
  69. #define FUN5(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5)
  70. #define EXT5(t1, t2, t3, t4, t5)        (t1, t2, t3, t4, t5)
  71.  
  72. #define FUN6(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6)
  73. #define EXT6(t1, t2, t3, t4, t5, t6)            (t1, t2, t3, t4, t5, t6)
  74.  
  75. #define FUN7(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7)
  76. #define EXT7(t1, t2, t3, t4, t5, t6, t7)        (t1, t2, t3, t4, t5, t6, t7)
  77.  
  78. #define FUN8(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8)
  79. #define EXT8(t1, t2, t3, t4, t5, t6, t7, t8)            (t1, t2, t3, t4, t5, t6, t7, t8)
  80.  
  81. #define FUN9(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8, t9 a9)
  82. #define EXT9(t1, t2, t3, t4, t5, t6, t7, t8, t9)            (t1, t2, t3, t4, t5, t6, t7, t8, t9)
  83.  
  84. #define FUN10(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8, t9 a9, t10 a10)
  85. #define EXT10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)                (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)
  86.  
  87. #define FUN11(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8, t9 a9, t10 a10, t11 a11)
  88. #define EXT11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)                (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)
  89.  
  90. #define FUN12(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8, t9 a9, t10 a10, t11 a11, t12 a12)
  91. #define EXT12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)                (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)
  92.  
  93. #define FUN13(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8, t9 a9, t10 a10, t11 a11, t12 a12, t13 a13)
  94. #define EXT13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)                (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)
  95.  
  96.  
  97. #else
  98. #include <varargs.h>
  99.  
  100. #define var_start(x,y) va_start(x)
  101.  
  102. /* These macros expand into old-style function definitions */
  103.  
  104. #define FUN0()    ()
  105. #define EXT0()    ()
  106.  
  107. #define FUN1(t1,a1)    (a1) t1 a1;
  108. #define EXT1(t1)    ()
  109. #define FUN1N(t1,a1)    (a1,va_alist) t1 a1; va_dcl
  110. #define EXT1N(t1)    ()
  111.  
  112. #define FUN2(t1,a1,t2,a2)    (a1, a2) t1 a1; t2 a2;
  113. #define EXT2(t1, t2)        ()
  114. #define FUN2N(t1,a1,t2,a2) (a1, a2,va_alist) t1 a1; t2 a2; va_dcl
  115. #define EXT2N(t1, t2)        ()
  116.  
  117. #define FUN3(t1,a1,t2,a2,t3,a3) (a1, a2, a3) t1 a1; t2 a2; t3 a3;
  118. #define EXT3(t1, t2, t3)    ()
  119. #define FUN3N(t1,a1,t2,a2,t3,a3) (a1, a2, a3, va_alist) t1 a1; t2 a2; t3 a3; va_dcl
  120. #define EXT3N(t1, t2, t3)    ()
  121.  
  122. #define FUN4(t1,a1,t2,a2,t3,a3,t4,a4)    (a1, a2, a3, a4) t1 a1; t2 a2; t3 a3; t4 a4;
  123. #define EXT4(t1, t2, t3, t4)        ()
  124.  
  125. #define FUN5(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) (a1, a2, a3, a4, a5) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5;
  126. #define EXT5(t1, t2, t3, t4, t5)    ()
  127.  
  128. #define FUN6(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) (a1, a2, a3, a4, a5, a6) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6;
  129. #define EXT6(t1, t2, t3, t4, t5, t6)    ()
  130.  
  131. #define FUN7(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) (a1, a2, a3, a4, a5, a6, a7) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7;
  132. #define EXT7(t1, t2, t3, t4, t5, t6, t7)    ()
  133.  
  134. #define FUN8(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) (a1, a2, a3, a4, a5, a6, a7, a8) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; t8 a8;
  135. #define EXT8(t1, t2, t3, t4, t5, t6, t7, t8)    ()
  136.  
  137. #define FUN9(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) (a1, a2, a3, a4, a5, a6, a7, a8, a9) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; t8 a8; t9 a9;
  138. #define EXT9(t1, t2, t3, t4, t5, t6, t7, t8, t9)    ()
  139.  
  140. #define FUN10(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; t8 a8; t9 a9; t10 a10;
  141. #define EXT10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)    ()
  142.  
  143. #define FUN11(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; t8 a8; t9 a9; t10 a10; t11 a11;
  144. #define EXT11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)    ()
  145.  
  146. #define FUN12(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; t8 a8; t9 a9; t10 a10; t11 a11; t12 a12;
  147. #define EXT12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)    ()
  148.  
  149. #define FUN13(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; t8 a8; t9 a9; t10 a10; t11 a11; t12 a12; t13 a13;
  150. #define EXT13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)    ()
  151.  
  152.  
  153. #endif
  154.